<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="container"></a><a href="https://python-scripts.com/loops-for-while"><span style=" text-decoration: underline; color:#0000ff;">p</span></a><span style=" text-decoration: underline; color:#0000ff;">ython-scripts.com</span> </p>
<p style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="reader-title"></a>Циклы в Python </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="reader-credits"></a>автор </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="meta-data"></a>8-12 минут </p>
<hr />
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="moz-reader-content"></a>Каждый язык программирования, с которым я сталкивался, содержит какую-нибудь <span style=" font-weight:600;">конструкцию цикла</span>. В большей части языков есть больше одной такой конструкции. В мире Python есть два типа циклов:</p>
<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style="" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Цикл <span style=" font-weight:600;">for</span></li>
<li style="" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Цикл <span style=" font-weight:600;">while</span></li></ul>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Я заметил, что <span style=" font-weight:600;">цикл for</span> популярнее второго. Циклы используются в тех случаях, когда нам нужно сделать что-нибудь много раз. Нередко вам придется выполнить какую-нибудь операцию (или ряд операций) в части данных снова и снова. Тут то и вступают в силу циклы. Благодаря им становится возможно максимально упростить данный вопрос. Давайте подробно разберём, как работают эти структуры! </p>
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:x-large; font-weight:600;">Цикл for</span></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Как было сказано ранее, мы используем <span style=" font-weight:600;">цикл</span> в тех случаях, когда вам нужно повторить что-нибудь n-ное количество раз. Это проще понять, если взглянуть на пример. Мы используем встроенную <a href="https://python-scripts.com/functions-python"><span style=" text-decoration: underline; color:#0000ff;">функцию Python</span></a> range. <span style=" font-weight:600;">Функция range</span> создаст список длинной в «n» элементов. В Python версии 2.Х существует другая функция под названием <span style=" font-weight:600;">xrange</span>, которая является генератором чисел и не такая ресурсоемкая, как <span style=" font-weight:600;">range</span>. Ранее разработчики <span style=" font-weight:600;">сменили xrange на range</span> в Python 3. Вот пример: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511beb300902027"></a>print(range(5)) # ответ: range(0, 5)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Как вы видите, функция <span style=" font-weight:600;">range</span> взяла целое число и вернула <span style=" font-weight:600;">объект range</span>. Функция range также принимает начальное значение, конечное значение и значение шага. Вот еще два примера: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511bfe649274091"></a>a = range(5, 10)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511bfe649274091-2"></a>print(a) # range(5, 10)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511bfe649274091-4"></a>b = list(range(1, 10, 2))</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511bfe649274091-5"></a>print(b) # [1, 3, 5, 7, 9]</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">В пером примере показано, что вы можете передать <span style=" font-weight:600;">начальное</span> и <span style=" font-weight:600;">конечное</span> значение, и функция range вернет числа, начиная с начального значения вплоть до (но не включая) последнее значение. Например, при запросе 5-10 мы получим 5-9. Во втором примере видно, как использовать <a href="https://python-scripts.com/lists-tuples-dictionaries"><span style=" text-decoration: underline; color:#0000ff;">функцию списка</span></a> (list) для того, чтобы <span style=" font-weight:600;">функция range</span> вернула каждый второй элемент, между 1 и 10. Так что она начинает с 1, пропускает 2 и так далее. Теперь вы, наверное, гадаете, что же именно она будет делать с <span style=" font-weight:600;">циклами</span>? Что-ж, есть один простой способ показать, как работает цикл с использованием <span style=" font-weight:600;">функции range</span>! Давайте взглянем: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c2e347927297"></a>for number in range(5):</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c2e347927297-2"></a>    print(number)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов. <a href="https://python-scripts.com/loops-for-while"><span style=" text-decoration: underline; color:#0000ff;">Цикл for</span></a>, показанный выше, может быть эквивалентом следующего: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c38619791819"></a>for number in [0, 1, 2, 3, 4]:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c38619791819-2"></a>    print(number)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Функция <span style=" font-weight:600;">range</span> лишь делает результат несколько меньшим. <span style=" font-weight:600;">Цикл for</span> может обходить любой итератор Python. Мы уже видели, как именно он может <a href="https://python-scripts.com/lists-tuples-dictionaries"><span style=" text-decoration: underline; color:#0000ff;">работать со списком</span></a>. Давайте взглянем, может ли он выполнять итерацию со словарем. </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c43019162342"></a>a_dict = {&quot;one&quot;:1, &quot;two&quot;:2, &quot;three&quot;:3}</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c43019162342-3"></a>for key in a_dict:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c43019162342-4"></a>    print(key)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Когда вы используете <span style=" font-weight:600;">for в словаре</span>, вы увидите, что он автоматически <span style=" font-weight:600;">перебирает ключи</span>. Вам не нужно указывать ключ for в <span style=" font-weight:600;">a_dict.keys()</span> (впрочем, это также работает). Python делает только нужные нам вещи. Вы возможно думаете, почему ключи выводятся в другом порядке, отличном от того, какой был указан в словаре? Как мы знаем из <a href="https://python-scripts.com/lists-tuples-dictionaries"><span style=" text-decoration: underline; color:#0000ff;">соответствующей статьи</span></a>, словари не упорядочены, так что мы можем выполнять итерацию над ними, при этом ключи могут быть в любом порядке. Теперь, зная, что ключи могут быть <span style=" font-weight:600;">отсортированы</span>, вы можете отсортировать их до итерации. Давайте немного изменим словарь, чтобы увидеть, как это работает. </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c4f018458138"></a>a_dict = {1:&quot;one&quot;, 2:&quot;two&quot;, 3:&quot;three&quot;}</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c4f018458138-2"></a>keys = a_dict.keys()</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c4f018458138-4"></a>keys = sorted(keys)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c4f018458138-5"></a>for key in keys:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c4f018458138-6"></a>    print(key)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Результат: </p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Давайте остановимся и разберемся с тем, что делает этот код. Во-первых, мы <a href="https://python-scripts.com/lists-tuples-dictionaries"><span style=" text-decoration: underline; color:#0000ff;">создали словарь</span></a>, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы <span style=" font-weight:600;">извлекли ключи из словаря</span>. Каждый раз, когда вы взываете метод <span style=" font-weight:600;">keys</span>(), он возвращает неупорядоченный список ключей. Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием <span style=" font-weight:600;">keys</span>. Мы <span style=" font-weight:600;">сортируем наш список</span>, после чего используем <a href="https://python-scripts.com/loops-for-while"><span style=" text-decoration: underline; color:#0000ff;">цикл for</span></a> в нем. Теперь мы готовы к тому, чтобы сделать все немного интереснее. Мы попробуем применить <span style=" font-weight:600;">цикл в функции range</span>, но нам нужно вывести только целые числа. Чтобы сделать это, нам нужно использовать условный оператор вместо параметра шага range. Это можно сделать следующим образом: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c6a941031351"></a>for number in range(10):</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c6a941031351-2"></a>    if number % 2 == 0:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c6a941031351-3"></a>        print(number)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Результат: </p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Вы наверное гадаете, что вообще здесь происходит? Что еще за знак процента? В Python, % называется <span style=" font-weight:600;">оператором модуля</span>. Когда вы используете оператор модуля, он <span style=" font-weight:600;">возвращает остаток</span>. Когда вы делите целое число на два, вы получаете число без остатка, так что мы выводим эти числа. Вам, возможно, не захочется использовать оператор модуля часто в будущем, но в моей работе он нередко помогает. Теперь мы можем взглянуть на <a href="https://python-scripts.com/loops-for-while"><span style=" text-decoration: underline; color:#0000ff;">цикл while</span></a>. </p>
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:x-large; font-weight:600;">Цикл while</span></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Цикл while</span> также используется для <span style=" font-weight:600;">повторения частей кода</span>, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не <span style=" font-weight:600;">достигнет определенного условия</span>. Давайте взглянем на простой пример: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c83244409567"></a>i = 0</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c83244409567-2"></a>while i &lt; 10:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c83244409567-3"></a>    print(i)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c83244409567-4"></a>    i = i + 1</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Цикл while</span> является своего рода условным оператором. Вот что значит этот код: пока переменная i меньше единицы, её нужно выводить на экран. Далее, в конце, мы увеличиваем её значение на единицу. Если вы запустите этот код, он выдаст от 0 до 9, каждая цифра будет в отдельной строке, после чего задача будет выполнена. Если вы удалите ту часть, в которой мы увеличиваем значение i, то мы получим <span style=" font-weight:600;">бесконечный цикл</span>. Как правило – это плохо. <span style=" font-weight:600;">Бесконечные циклы</span> известны как логические ошибки, и их нужно избегать. Существует другой способ вырваться из цикла, для этого нужно использовать встроенную функцию <span style=" font-weight:600;">break</span>. Давайте посмотрим, как это работает: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c8c755345168"></a>while i &lt; 10:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c8c755345168-2"></a>    print(i)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c8c755345168-4"></a>    if i == 5:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c8c755345168-5"></a>        break</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c8c755345168-7"></a>    i += 1</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">В этой части кода мы добавили условное выражение для проверки того, равняется ли когда-либо переменная i цифре 5. Если нет, тогда мы <span style=" font-weight:600;">разрываем цикл</span>. Как вы видите в выдаче кода, как только значение достигает пяти, код останавливается, даже если мы ранее указали <span style=" font-weight:600;">while</span> продолжать цикл, пока переменная не достигнет значения 10. Обратите внимание на то, что мы изменили то, как мы увеличиваем значение при помощи <span style=" font-weight:600;">+=</span>. Это удобный ярлык, который вы можете также использовать в других операциях, таких как вычитание <span style=" font-weight:600;">-=</span> и умножение <span style=" font-weight:600;">*=</span>. Встроенный <span style=" font-weight:600;">break</span> также известен как инструмент управления потока. Существует еще один, под названием <span style=" font-weight:600;">continue</span>, который в основном используется для пропуска итерации, или перейти к следующей итерации. Вот один из способов его применения: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312"></a>i = 0</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-3"></a>while i &lt; 10:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-4"></a>    if i == 3:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-5"></a>        i += 1</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-6"></a>        continue</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-8"></a>    print(i)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-9"></a>    if i == 5:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-10"></a>        break</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511c97477542312-12"></a>    i += 1</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Слегка запутанно, не так ли? Мы добавили второе условное выражение, которое проверяет, не равняется ли i трем. Если да, мы увеличиваем переменную и переходим к <span style=" font-weight:600;">следующему циклу</span>, который удачно пропускает вывод значения 3 на экран. Как и ранее, когда мы достигаем значения 5, мы <span style=" font-weight:600;">разрываем цикл</span>. Существует еще одна тема, касающаяся циклов, которую нам нужно затронуть – это <span style=" font-weight:600;">оператор else</span>. </p>
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:x-large; font-weight:600;">Зачем нужен else при работе с циклами?</span></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Оператор else</span> в циклах выполняется только в том случае, если цикл выполнен успешно. Главная задача <span style=" font-weight:600;">оператора else</span>, это поиск объектов: </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
<table border="0" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;" cellspacing="2" cellpadding="0">
<tr>
<td></td>
<td>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465"></a>my_list = [1, 2, 3, 4, 5]</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-3"></a>for i in my_list:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-4"></a>    if i == 3:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-5"></a>        print(&quot;Item found!&quot;)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-6"></a>        break</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-7"></a>    print(i)</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-8"></a>else:</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="crayon-5a61eda511ca3768045465-9"></a>    print(&quot;Item not found!&quot;)</p></td></tr></table>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">В этом коде мы <span style=" font-weight:600;">разорвали цикл</span>, когда i равно 3. Это приводит к пропуску <span style=" font-weight:600;">оператора else</span>. Если вы хотите провести эксперимент, вы можете изменить условное выражение, чтобы посмотреть на значение, которое находится вне списка, и которое приведет оператор else к выполнению. Честно, ни разу не видел, чтобы кто-либо использовал данную структуру за все годы работы. Большая часть примеров, которые я видел, приведена блогерами, которые пытаются объяснить, как это работает. Я видел несколько людей, которые использовали эту структуру для провоцирования <span style=" font-weight:600;">ошибки</span>, когда объект не удается найти в искомом цикле. Вы можете <a href="https://ncoghlan_devs-python-notes.readthedocs.org/en/latest/python_concepts/break_else.html"><span style=" text-decoration: underline; color:#0000ff;">почитать статью</span></a>, в которой вопрос рассматривается весьма детально. Статья написана одним из разработчиков ядра Python.</p>
<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:x-large; font-weight:600;">Подведем итоги</span></p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Надеюсь, с этого момента вы осознали всю значимость <a href="https://python-scripts.com/loops-for-while"><span style=" text-decoration: underline; color:#0000ff;">циклов в Python</span></a>. Они делают повторение очень простым, и весьма понятным. Вы будете сталкиваться с <span style=" font-weight:600;">циклом for</span> намного чаще, чем с <span style=" font-weight:600;">циклом while</span>. Если вы все еще не совсем понимаете, как это работает, настоятельно рекомендую перечитать эту статью, перед тем как продолжить. </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>